import mobileSchema from 'validate'

// 创建验证规则
const mobileValidate = new mobileSchema({
  mobile: {
    type: String,  //数字类型
    required: true, //是否必须
    match: /^1[3-9]\d{9}$/,  //正则
    message: '手机号码不合法', //提示信息
  }
})

const codeValidate = new mobileSchema({
  code: {
    type: String,  //数字类型
    required: true, //是否必须
    match: /^\d{6}$/,  //正则
    message: '验证码不合法', //提示信息
  }
})

Page({
  data: {
    countDownVisible: false,
    mobile: '15991236833',
    // 倒计时
    timeData: null,
    // 手机验证码
    code: ''
  },

  countDownChange(ev) {
    this.setData({
      timeData: ev.detail,
      countDownVisible: ev.detail.minutes === 1 || ev.detail.seconds > 0,
    })
  },

  // 获取验证码按钮的点击事件
  async onGetCode() {
    // 直接获取用户的手机号码
    const mobile = this.data.mobile
    // const { mobile } = this.data
    // 做手机号码的格式验证
    const err = mobileValidate.validate({ mobile: mobile })
    console.log(err);
    // debugger  打上断点
    if (err.length) {
      return wx.utils.toast(err[0].message)
    }
    // 发送请求  根据手机号码  获取对应的验证码
    const res = await wx.http({
      url: '/code',
      data: {
        mobile
      }
    })

    this.setData({
      countDownVisible: true
    })
    console.log('验证码的接口数据', res);
  },

  onLoad({ redirector }) {
    this.redirector = redirector
  },

  // 点击登录按钮
  async onSubmit() {
    // 直接获取
    const mobile = this.data.mobile
    const code = this.data.code

    // 手机号验证
    const err = mobileValidate.validate({ mobile: mobile })
    if (err.length) {
      return wx.utils.toast(err[0].message)
    }

    // 验证码验证
    const codeErr = codeValidate.validate({ code: code })
    if (codeErr.length) {
      return wx.utils.toast(codeErr[0].message)
    }

    const res = await wx.http({
      url: '/login',
      method: 'post',
      data: {
        mobile,
        code
      }
    })

    // 将token存储起来
    const app = getApp()
    app.saveToken(res.data.token, res.data.refreshToken)

    if (this.redirector) {
      // 有来源页面 跳回去
      // switchTab只能跳转到tabbar页面
      // wx.reLaunch  可以跳转任何页面

      // 这里面之所以使用这个因为它可以跳转任何页面
      // 而且是有来源地址的情况下，所以有两种情况
      // 一、来源地址不是tabbar的
      // 二、来源地址是tabbar的
      wx.reLaunch({ url: '/' + this.redirector }) //需要加上/
    } else {
      // 没有来源页面 跳转到首页  是tabbar页面不能使用navigateTO跳转
      wx.switchTab({ url: '/pages/index/index' })
    }
  }
})
